#ifndef __TAG_TYPE_H__
#define __TAG_TYPE_H__


#define TT_END		((char)0)
#define TT_BYTE		((char)1)
#define TT_SHORT	((char)2)
#define TT_INT		((char)3)
#define TT_LONG		((char)4)
#define TT_FLOAT	((char)5)
#define TT_DOUBLE	((char)6)
#define TT_BARRAY	((char)7) //byte array
#define TT_STRING	((char)8)
#define TT_LIST		((char)9)
#define TT_COMPD	((char)10) //compound

extern const char *tag_type_names[];

struct _tag
{
	char type;
	char *name;
	void *data;
};

typedef struct _tag* tag_t;


tag_t tag_new(int tag_type);


#endif //__TAG_TYPE_H__

